<?php

 /**
  * Копирует файл и заменяет текст в копируемом файле
  * Источником "что" и "на что" заменять выступает третий параметр - массив $replace
  *
  * @package JooS
  * @subpackage PHPackager
  */

  require_once "JooS/Helper/Abstract.php";

  class JooS_PHPackager_Helper_Copy_Withreplace extends JooS_Helper_Abstract {
    public function __invoke($source, $path, $replace) {
      require_once "JooS/Config.php";
      require_once "JooS/Event/Fs/File/Create.php";
      require_once "JooS/PHPackager/FS.php";

      $Event_newFile_observer = function(JooS_Event_Fs_File_Create $event) use ($replace) {
        $realPath = $event->realPath;
        $path = $event->path;
        $tmpFile = $event->tmpFile;

        $contents = $tmpFile->file_get_contents();
        foreach ($replace as $k => $v) {
          $contents = str_replace($k, $v, $contents);
        }
        $tmpFile->file_put_contents($contents);
      };

      JooS_Event_Fs_File_Create::getInstance()
        ->attach($Event_newFile_observer);

      JooS_PHPackager_FS::getInstance()
        ->copy($source, $path);

      JooS_Event_Fs_File_Create::getInstance()
        ->detach($Event_newFile_observer);
    }
  }
